package gof_003_行为型_Behavioral.gof_003_观察者_Observer.gof_002_Observer;

import java.util.ArrayList;
import java.util.List;

public class Lamp {
    //灯的颜色
    private String color;

    //灯的观察者
    private List<LampObserver> observerList = new ArrayList<>();


    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
        //一旦修改了颜色,立即通知所有观察者
        notifyAllObservers();
    }


    /**
     * 通知所有观察者
     */
    private void notifyAllObservers() {
        for (LampObserver ob : observerList) {
            ob.update(this);
        }
    }

    /**
     * 添加观察者
     * @param observer
     */
    public void addObserver(LampObserver observer) {
        observerList.add(observer);
    }

    /**
     * 移除观察者
     * @param observer
     */
    public void removeObserver(LampObserver observer) {
        observerList.remove(observer);
    }
}